// Copyright©,2020-2025
// Author: caocheng
// Version: 1.0.0
// Date: 2021/2/25 15:06
// Description：
package SummerWeb

import (
	"reflect"

	"gitee.com/chrischo/go-summer/summer/summer-utils"
	v10 "github.com/go-playground/validator/v10"
)

// defaultValidator 默认的参数校验器
type defaultValidator struct {
	validator *v10.Validate
}

// NewDefaultValidator defaultValidator 的构造函数
func NewDefaultValidator() *defaultValidator {
	return &defaultValidator{validator: v10.New()}
}

// Engine 返回原始的参数校验引擎
func (v *defaultValidator) Engine() interface{} {
	return v.validator
}

// Validate 校验参数
func (v *defaultValidator) Validate(i interface{}) error {
	if SummerUtils.Indirect(reflect.TypeOf(i)).Kind() == reflect.Struct {
		return v.validator.Struct(i)
	}
	return nil
}
